javacript new

时间:

1.如果一个函数没有返回值,那么如果不使用new来创建变量,那么该变量的值为undefined.如果用了new,那么就是Object.说明一个函数的默认的Prototype是Object.

1
2
3
4
5
6
7
8
9
10
function Test1(str) {
this.a = str;
}
var myTest = new Test1("test1");
alert(myTest);
function Test1WithoutNew(str) {
this.a = str;
}
var myTestWithoutNew = Test1WithoutNew("test1");
alert(myTestWithoutNew);

2.如果函数有返回值,但是返回值是基本类型。那么new出来的myTest还是object.。

1
2
3
4
5
6
7
8
9
10
11
12
13
function Test1(str) {
this.a = str;
return this.a;
}
var myTest = new Test1("test1");
alert(myTest); //Object

function Test1WithoutNew(str) {
this.a = str;
return this.a;
}
var myTestWithoutNew = Test1WithoutNew("test1");
alert(myTestWithoutNew);

3。如果函数的返回值为new出来的对象,那么myTest的值根据new出来的对象而定。

1
2
3
4
5
6
function Test1(str) {
this.a = str;
return new String(this.a);
}
var myTest = new Test1("test1");
alert(myTest);